home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Linux Cubed Series 8: LINUX Games
/
Linux Cubed Series 8 - LINUX Games.iso
/
games
/
muds
/
pennmush.000
/
pennmush-1.50-p8-linux.tar
/
pennmush
/
mem_check.c
< prev
next >
Wrap
C/C++ Source or Header
|
1992-11-19
|
1KB
|
79 lines
#include "config.h"
#ifdef MEM_CHECK
#include "externs.h"
#include "mem_check.h"
MEM *my_check = NULL;
void add_check(ref)
char *ref;
{
MEM *loop;
for(loop = my_check; loop; loop = loop->next) {
if(!strcasecmp(ref, loop->ref_name)) {
loop->ref_count++;
return;
}
}
loop = (MEM *) malloc(sizeof(MEM));
loop->ref_name = ref;
loop->ref_count = 1;
loop->next = my_check;
my_check = loop;
add_check("mem_check");
return;
}
void del_check(ref)
char *ref;
{
MEM *loop;
for(loop = my_check; loop; loop = loop->next) {
if(!strcasecmp(loop->ref_name, ref)) {
loop->ref_count--;
if(!loop->ref_count) {
rebuild_check();
del_check("mem_check");
}
return;
}
}
fprintf(stderr,
"ERROR: Tried deleteing a check that was never added! :%s\n", ref);
}
void rebuild_check()
{
MEM *point, *next, *new = NULL;
point = my_check;
while (point) {
next = point->next;
if(point->ref_count) {
point->next = new;
new = point;
} else {
free((char *)point);
}
point = next;
}
my_check = new;
}
void list_mem_check(player)
dbref player;
{
MEM *loop;
for(loop = my_check; loop; loop = loop->next) {
notify(player, tprintf("%s : %d", loop->ref_name, loop->ref_count));
}
}
#endif /* MEM_CHECK */